local ClientOHOH = _G.ClientOHOH;

local M = ClientOHOH.class.new(script, ClientOHOH.files.OHOHOLYBUIBase());
local CallBackManager = ClientOHOH.load.CallBackManager();
local ConnectClass=_G.CommonOHOH.load.Connect();
local TweenHelper = _G.CommonOHOH.load.TweenHelper();
local BtnHelper = ClientOHOH.load.BtnHelper();
local RecipeTool=_G.CommonOHOH.load.RecipeTool();
local recipe_cfg=_G.CommonOHOH.config.Recipe


local  recipePerfab=ClientOHOH:GetPath_Loop("ReplicatedStorage.Resource.UI.RecipeCell")
local asset={
    [1]="ReplicatedStorage.Relics",
   -- [2]="ReplicatedStorage.Car.Ring",
}


function InitInsts(ui)
	ui.insts = {
        cell = "ctrl.cell",
        btn = "ctrl.btn",
        equipIcon = "ctrl.equip",
        -- viewportFrame = "ctrl.ViewportFrame", --展示模型
        recipeImage = "ctrl.img",

        lockColor= "ctrl.color.lock",
        unlockColor= "ctrl.color.Unlock",
        selectColor= "ctrl.color.select",
        defSelectColor= "ctrl.color.defSelect",
    };

end;

function M.new(...)
	return M(...);
end;


--参数：
--recipeId,宝物id

--parent:cell所在父节点
--dataBase：玩家数据库

function M.ctor(self,recipeId,parent,database)
   
    InitInsts(self)
    M.super.ctor(self,recipePerfab:Clone())
    self:SetParent(parent)
    
    self.ClickEvent=ConnectClass.new();  

    CallBackManager:AddRbxConnect(self,self.insts.btn.Activated, function()
        self.ClickEvent:Action()
	end);
    
    self.main_inst.Visible=true
    self.recipeId=recipeId
    self.DataBase=database
    self.Lock = true

    self.data= RecipeTool.GetRecipeAllInfo(self.recipeId)
    self:init()
end;

function M.init(self)
     self.insts.recipeImage.Image = RecipeTool.GetRecipeImage(self.recipeId)
     self.insts.recipeImage.ImageColor3 =  self.insts.lockColor
end

function M.dtor(self)
    -- self:HideTip()
    self.main_inst:Destroy()
	M.super.dtor(self);
end;

--********************************************************************************

--以下是接口

-------------各种标记----锁定，准备，选择，删除（售卖）------------------------------------------------


-- --设置显示状态（隐藏，或者显示）
-- function M.SetShowStatus(self,isShow)
--     self.main_inst.Visible=isShow
-- end
--设置装备状态
function M.SetEquipStatus(self,isEquip)
        self.insts.equipIcon.Visible = isEquip
end
--设置选中状态(true,会出现红心)
function M.SetSelectedStatus(self,isSelelct)
    --self.insts.selectedIcon.Visible=isSelelct
    if isSelelct then
        self.insts.btn.BackgroundColor3 =  self.insts.selectColor
    else
        self.insts.btn.BackgroundColor3 =  self.insts.defSelectColor
    end
end

--设置拥有状态
function M.SetLockStatus(self,isLock)
    self.Lock = isLock
    if isLock then
        self.insts.recipeImage.ImageColor3 =  self.insts.lockColor
    else
        self.insts.recipeImage.ImageColor3 =  self.insts.unlockColor
    end
end

--设置是否制作
function M.SetIsMake(self,isMake)
    self.isMake = isMake
end

--设置是否装备
function M.SetIsEquip(self,isEquip)
    self.isEquip = isEquip
    self:SetEquipStatus(isEquip)
end

function M.GetLockStatus(self)
    return self.Lock
end
--获取是否装备
function M.GetIsEquip(self)
    return self.isEquip
end

--获取是否制作
function M.GetIsMake(self)
    return self.isMake
end
-- --设置title的可视状态，roll的时候才show
-- function M.SetTitleVisibility(self,isVisible)
--     self.insts.rollTitle.Visible = isVisible
-- end

-- --设置weight可视状态
-- function M.SetRecipeWeightVisibility(self,isVisible)
--     self.insts.RecipeWeight.Visible = isVisible
-- end

-- --设置品阶可视状态
-- function M.SetRecipeInVisibility(self,isVisible)
--     self.insts.RecipeIn.Visible = isVisible
-- end

-- --设置数量显示状态
-- function M.SetRecipeNumVisibility(self,isVisible)
--     self.insts.RecipeNum.Visible = isVisible
-- end

--设置数量文本 needNum不传显示xN,传则显示n/m
function M.SetRecipeNum(self,hadNum,needNum)
    if needNum then
        self.insts.RecipeNum.Text = hadNum.."/"..needNum
        if tonumber(hadNum) >= tonumber(needNum) then
            self.insts.RecipeNum.Color = Color3.new(0.219607, 0.713725, 0.278431)
        else
            self.insts.RecipeNum.Color = Color3.new(0.713725, 0.250980, 0.219607)
        end
        return 
    end
    self.insts.RecipeNum.Text = "x"..hadNum
end

-- --是否拥有
-- function M.isHad(self)
--     return  self.insts.hadIcon.Visible
-- end

-- --是否被选中
-- function M.isSelected(self)
--     return self.insts.selectedIcon.Visible
-- end

function M.GetParent(self)
    return self.main_inst.Parent
end

function M.SetParent(self,parent)
    self.main_inst.Parent=parent
end

-- function M.Active(self)
-- 	self:SetSelectedStatus(true)
--     --self:SetHadStatus(false)--选中状态优先级最高，隐藏装备标签（选中和装备标签是重叠的）
-- end;


-- function M.NoActive(self)
-- 	self:SetSelectedStatus(false)
-- end;




----------------标签End----------------------------


-----------------配方信息相关-----------------------------


--获取cfg
function M.GetRecipeCfgData(self)
    return self.data.cfg
end
function M.GetRecipeID(self)
    return self.data.cfg.id
end
function M.GetRecipeCost(self)
    return self.data.cfg.cost
end
function M.GetPart(self)
    return self.data.cfg.cost
end
-- ------------------配方信息-End--------------------------------------

-- ----------------------其它接口--------------------------------

-- function M.GetGuid(self)
--     return  self.guid
--  end

-- function M.GetCarId(self)
--    return  self.carId
-- end


-- 返回cell的绝对坐标
function M.GetAbsolutePosition(self)
    return self.main_inst.AbsolutePosition
end

--获取cell所在的ScreenGui
function M.GetRootGui(self)
    if not  self.RootGui then
        self.RootGui=self.main_inst:FindFirstAncestorOfClass("ScreenGui")
        if not self.RootGui then
            self.RootGui=self.main_inst:FindFirstAncestorOfClass("BillboardGui")
        end
    end
    return self.RootGui
end



return M